-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
initial draft for evaluating Data Channel as the transport protocol. #24
Conversation
datachannel.md
Outdated
|
||
[Data Channel](https://tools.ietf.org/html/draft-ietf-rtcweb-data-channel-13) | ||
is a non-media transport protocol in WebRTC framework, designed for exchanging | ||
data from peer to peer. It advertise the following benefits: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
advertises
datachannel.md
Outdated
data from peer to peer. It advertise the following benefits: | ||
|
||
- Implemented in major browsers (except Safari) | ||
- Support heterogeneous network environment e.g. NAT, firewall. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Supports
datachannel.md
Outdated
|
||
- Implemented in major browsers (except Safari) | ||
- Support heterogeneous network environment e.g. NAT, firewall. | ||
- Easily support media transport for remote playback |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Supports
datachannel.md
Outdated
# Presentation API functionality | ||
|
||
Data Channel is designed to be a non-media transport for WebRTC, with built-in | ||
sub protocol negociation mechanism defined. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo in "negotiation"
datachannel.md
Outdated
sub protocol negociation mechanism defined. | ||
|
||
A Data Channel is built on top of SCTP/DTLS/UDP protocol stack, which supports | ||
reliable data transmition. Each Data Cahnnel has a unique integer ID and a label. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo in Channel
datachannel.md
Outdated
|
||
Assume that a single Data Channel is used as a control channel to transmit control | ||
messages between the controller and receiver and one Data Channel is created for each | ||
connected Presentation Connection for trasmitting application data. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo: transmitting
datachannel.md
Outdated
connected Presentation Connection for trasmitting application data. | ||
|
||
An extra signalling channel and protocol for exchanging ICE candidates is required | ||
to bootstrap the control channel. The bootstraping procedure needs to be executed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bootstrapping
datachannel.md
Outdated
|
||
1. Send a control message on control channel from the controller to the display | ||
reconnect to a presentation with ID and URL for the initial presentation connection. | ||
2. Receiver spawn a Data Channel on the same RTC connection of control channel, with |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If a second controller wants to initiate connection to the same presentation, would it have a duplicate Data Channel label?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generating a unique session Id in Receiver side seems to be a simpler solution for supporting many-to-one presentation.
datachannel.md
Outdated
|
||
# Latency to establish a new connection | ||
|
||
Data on connection establishment latency. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It sounds like are three sources of latency:
- Connecting a reliable channel the first time for for ICE negotiation.
- Establishing the first Data Channel (perhaps this is part of [Meta] Write document describing protocol requirements #1).
- Adding an additional Data Channel on top of an existing peer-to-peer connection.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, exactly. I'll add it to this document.
datachannel.md
Outdated
# Reliability | ||
|
||
WebRTC is designed to be operated on heterogeneous network environment, using | ||
ICE for address discovery and built-in negociation/re-negociation mechanism. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
s/negociation/negotiation/g
This looks great @schien! Most of my comments are minor typos. Did you have thoughts about establishing the bootstrap reliable channel for ICE negotation? IIRC Mozilla uses a TCP channel for this. I believe the bootstrap channel needs to remain open in case the network routing changes and ICE renegotiation occurs. I recently heard from local WebRTC contacts that there is exploratory work to layer RTCDataChannel on top of QUIC, since the functionality is similar. Something to keep an eye on. |
Yes, the example protocol we have in current Gecko codebase uses TCP channel for bootstrapping DataChannel. To be more specific, TLS connection is used (with self-generated certificate, fingerprint broadcast on DNSSD). |
af92d82
to
07d1d55
Compare
07d1d55
to
600beba
Compare
address issue #10